package com.mercury.ec.module.air.controller.admin.demandorder.vo.demandorder;

import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.mercury.ec.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;

import static com.mercury.ec.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

@Schema(description = "管理后台 - 机票需求订单分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class AirDemandOrderPageReqVO extends PageParam {

    @Schema(description = "需求单号")
    private String no;

    @Schema(description = "客户id 见表（basic_customer.id）", example = "26965")
    private Long customerId;

    @Schema(description = "客户编号")
    private String customerNo;

    @Schema(description = "客户名称", example = "王五")
    private String customerName;

    @Schema(description = "申请人id 见表（system_users.id）", example = "27903")
    private Long applyUserId;

    @Schema(description = "航程信息")
    private String flightInfo;

    @Schema(description = "预订员id 见表（system_users.id）", example = "21534")
    private Long bookUserId;

    @Schema(description = "预订部门id 见表（system_dept.id）", example = "450")
    private Long bookDeptId;

    @Schema(description = "预订时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] bookTime;

    @Schema(description = "是否锁单")
    private Boolean locked;

    @Schema(description = "锁单员id 见表（system_users.id）", example = "31984")
    private Long lockUserId;

    @Schema(description = "锁单部门id 见表（system_dept.id）", example = "2728")
    private Long lockDeptId;

    @Schema(description = "锁单时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] lockTime;

    @Schema(description = "最后报价操作员id 见表（system_users.id）", example = "1703")
    private Long finallyQuoteUserId;

    @Schema(description = "最后报价部门id 见表（system_dept.id）", example = "26726")
    private Long finallyQuoteDeptId;

    @Schema(description = "最后报价时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] finallyQuoteTime;

    @Schema(description = "最后核价操作员id 见表（system_users.id）", example = "1703")
    private Long finallyPricingUserId;

    @Schema(description = "最后核价部门id 见表（system_dept.id）", example = "26726")
    private Long finallyPricingDeptId;

    @Schema(description = "最后核价时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] finallyPricingTime;

    @Schema(description = "取消规则id 见表（train_cancel_rule.id）", example = "31036")
    private Long cancelRuleId;

    @Schema(description = "取消操作员id 见表（system_users.id）", example = "3484")
    private Long cancelUserId;

    @Schema(description = "取消部门id 见表（system_dept.id）", example = "25953")
    private Long cancelDeptId;

    @Schema(description = "取消时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] cancelTime;

    @Schema(description = "取消原因")
    private String cancelCause;

    @Schema(description = "联系人")
    private String contact;

    @Schema(description = "联系人电话")
    private String contactPhone;

    @Schema(description = "订单状态 字典（air_demand_order_status）", example = "1")
    private Integer status;

    @Schema(description = "备注", example = "你猜")
    private String remark;

    @Schema(description = "创建时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] createTime;

}
